﻿using System.Configuration;

namespace Borg.Config
{
    public class RuntimeElement : ConfigurationElement
    {
        [ConfigurationProperty("verbosity")]
        public VerbosityLevel? Verbosity
        {
            get { return (VerbosityLevel?)this["verbosity"]; }
            set { this["verbosity"] = value; }
        }

        [ConfigurationProperty("dispatcher", IsRequired = false)]
        public TypeElement Dispatcher
        {
            get { return (TypeElement)this["dispatcher"]; }
            set { this["dispatcher"] = value; }
        }

        [ConfigurationProperty("loader", IsRequired = false)]
        public TypeElement Loader
        {
            get { return (TypeElement)this["loader"]; }
            set { this["loader"] = value; }
        }

        [ConfigurationProperty("activator", IsRequired = false)]
        public TypeElement Activator
        {
            get { return (TypeElement)this["activator"]; }
            set { this["activator"] = value; }
        }

        [ConfigurationProperty("typeStore", IsRequired = false)]
        public TypeElement TypeStore
        {
            get { return (TypeElement)this["typeStore"]; }
            set { this["typeStore"] = value; }
        }

        [ConfigurationProperty("composer", IsRequired = false)]
        public TypeElement Composer
        {
            get { return (TypeElement)this["composer"]; }
            set { this["composer"] = value; }
        }

        [ConfigurationProperty("instanceStore", IsRequired = false)]
        public TypeElement InstanceStore
        {
            get { return (TypeElement)this["instanceStore"]; }
            set { this["instanceStore"] = value; }
        }

        [ConfigurationProperty("qualifier", IsRequired = false)]
        public TypeElement Qualifier
        {
            get { return (TypeElement)this["qualifier"]; }
            set { this["qualifier"] = value; }
        }

        [ConfigurationProperty("notifier", IsRequired = false)]
        public TypeElement Notifier
        {
            get { return (TypeElement)this["notifier"]; }
            set { this["notifier"] = value; }
        }

        [ConfigurationProperty("invoker", IsRequired = false)]
        public TypeElement Invoker
        {
            get { return (TypeElement)this["invoker"]; }
            set { this["invoker"] = value; }
        }

        [ConfigurationProperty("loggers", IsRequired = false)]
        public LoggerElementCollection Loggers
        {
            get { return (LoggerElementCollection)this["loggers"]; }
            set { this["loggers"] = value; }
        }

        [ConfigurationProperty("persistor", IsRequired = false)]
        public PersistorElement Persistor
        {
            get { return (PersistorElement)this["persistor"]; }
            set { this["persistor"] = value; }
        }

        [ConfigurationProperty("settingStore", IsRequired = false)]
        public TypeElement SettingStore
        {
            get { return (TypeElement)this["settingStore"]; }
            set { this["settingStore"] = value; }
        }

        [ConfigurationProperty("settingProvider", IsRequired = false)]
        public SettingProviderElement SettingProvider
        {
            get { return (SettingProviderElement)this["settingProvider"]; }
            set { this["settingProvider"] = value; }
        }

        [ConfigurationProperty("addOns", IsRequired = false)]
        public AddOnElementCollection AddOns
        {
            get { return (AddOnElementCollection)this["addOns"]; }
            set { this["addOns"] = value; }
        }
    }
}
